/**
 * 每次可将数组任意元素加1，问至少几次操作可以使得有K个元素相等
 * 显然想等的那个值必然是某个Ai之一。其次，将某些元素加到Ai，显然要选最靠近Ai的那些元素
 * 将A排序，然后for 每个Ai： 计算以Ai为基准要使K个元素相等的最小操作数量，可以用前缀和求得
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;


int N, K;
vi A;
vector<llt> S;



llt proc(){
    S.assign(N + 1, 0LL);
    sort(A.begin(), A.end());
    for(int i=1;i<=N;++i) S[i] = A[i] + S[i - 1];

    llt ans = (N + 0LL) * A[N];
    for(int i=K;i<=N;++i){
        ans = min(ans, (K + 0LL) * A[i] - (S[i] - S[i - K]));
    }
    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--){
        cin >> N >> K;
        A.assign(N + 1, 0);
        for(int i=1;i<=N;++i)cin >> A[i];
        cout << proc() << endl;
    }
    return 0;
}